package com.ice.delay.task.core.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Date;

/**
 * @author wangwei
 * @Date 2022/4/26 14:11
 */
@Data
public class DelayTaskDetail {

    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    // 模块编码
    @NotEmpty(message = "模块编码不能为空")
    private String moduleCode;

    // 编码
    private String code;

    // 任务编码
    @NotEmpty(message = "任务编码不能为空")
    private String taskCode;

    // 任务名称
    @NotEmpty(message = "任务名称不能为空")
    private String taskName;
    // 是否立即执行
    @NotNull(message = "执行标识不能为空")
    private Boolean immediatelyExecute;

    // 任务回调地址
    @NotEmpty(message = "任务回调地址不能为空")
    private String taskNotifyUrl;

    // 任务回调参数
    @NotEmpty(message = "任务回调参数不能为空")
    private String requestParam;

    // 任务回调的请求方式
    @NotEmpty(message = "任务回调的请求方式不能为空")
    private String requestMethod;

    // 延时任务时间(秒)
    @NotNull(message = "任务回调延时时间不能为空")
    private Integer delayTime;

    // 通知地址重试次数
    private Integer notifyRetryNum;

    // 下次通知的时间
    private Date notifyNextTime;

    // 通知状态（ 0:初始状态 1:成功 2:失败重试中 3:失败）
    private Integer notifyStatus;

    // 执行状态（0：未执行，1：运行中（处在时间轮中），2：停止）
    private Integer executeStatus;

    // 备注
    private String remark;

    // 创建时间
    private Date createTime;

    // 更新时间
    private Date updateTime;
}
